\chapter{密码学研究内容}

\section{密码设计}
就是研究如何设计一种满足“安全目标的”密码系统，包括密码设计的方法学和具体的密码设计。按照不同的分类方法，可以分为公钥密码体制(public key cryptosystem)和对称密码体制(secret key cryptosystem / symmetric cryptosystem)。也可以分为流密码（也称序列密码，stream ciphers）和分组密码（block chiphers）等。\par
但是通常在实际应用时，基本的密码算法会在系统的不同实现层次进行应用，并且会用来实现不同的安全目标，而这些也应该是密码应用的研究范畴。\par
在\cite{klein-cry}一书中，其根据密码的应用将密码学分为：
\begin{itemize}
	\item 含糊的安全目标
	\item 形式化的安全目标
	\item 密码协议
	\item 密码学构建模块
	\item 密码学构建模块的实现
\end{itemize}

密码算法设计中的通用要求：
\begin{itemize}
	\item 可逆性：这是基本要求，其实就是要求有解密算法的存在。
	\item 对合性：这是要求加解密算法中的基础计算部分是可以重用的，这样可以使算法实现的工作量减半，这是从实现角度方面考虑的结果。
\end{itemize}

\subsection{密码体制}
一个密码体制是指这样一种数学映射：
\begin{enumerate}
	\item 明文消息空间M，某个字母表上的串集,M表示message。
	\item 密文消息空间C，可能的密文消息集,C表示cipher。
	\item 加密密钥空间$K_e$，可能的加密密钥集，K表示key，e表示encrypt。
	\item 解密密钥空间$K_d$，可能的解密密钥集。d表示decryp。
	\item 加密算法$E:M\times K_e \rightarrow C$,也可写为$c=E_{k_e}(m)$.
	\item 加密算法$D:C\times K_d \rightarrow M$,也可写为$m=D_{k_d}(c)$.
	\item 密码体制满足$D_{k_d}(E_{k_e}(m))=m$.
\end{enumerate}
\section{密码分析}

	密码分析（英语：cryptanalysis，来源于希腊语kryptós，即“隐藏”，以及analýein，即“解开”），是一门研究在不知道通常解密所需要的秘密信息的情况下对信息进行解密的学问。通常，这需要寻找一个秘钥。也就是通常我们说的破解密码。\par
	根据密码分析员的能力，可以将密码分析员对密码系统的攻击分为以下几种\cite{qing-cry}：\par
	\begin{itemize}
		\item 密码分析员掌握除了密钥外，密码系统的加密和解密算法。
		\item 仅知密文攻击，密码分析员能够获得密文。ciphertext-only attack.
		\item 已知明文攻击，密码分析员能够获得某些明文和这些明文对应的密文。known-plaintext attack.
		\item 选择明文攻击，密码分析员能够有选择地获得明文和这些明文对应的密文。chosen-plaintext attack.
		\item 密码分析员可以像合法用户那样发送加密的信息。chosen-ciphertext attack.
		\item 密码分析员可以改变、截取或重新发送信息。
	\end{itemize}
	
	按照分析的方法，可以分为：\par
	\begin{itemize}
		\item 穷举法，字典攻击。
		\item 数学攻击：统计攻击、差分攻击、线性攻击、代数攻击、相关攻击。
		\item 物理攻击：侧信道分析(side channel attack)和与硬件相关的能量分析、时间分析、声音分析、电磁辐射。通常理论上安全的算法，但由于物理实现上的不足，而使得安全性出现问题，这就对硬件设计、密码芯片设计提出更高要求。
	\end{itemize}
\section{密码测评}
如何评价密码算法的安全性，如何评价好坏，有多好，多坏，以及如何评价一个加密算法在产品实现中的安全性，在系统的实现中都是很重要的。\par
密码测评（cipher evaluation）是与密码分析有着很多相同点，但是又不同的概念，特别是随着密码的产业化应用，这种不同越来越重要，并且相互不能等同。\par
以下是来自论文\cite{cry-evaluate}中对于密码测评和分析概念不同的描述。\par
Evaluation is a process intended for highlight some unconformities or deficiencies of a cryptosystem which can be used by a cracker.\par
The evaluation of a cryptographic module can by done using NIST FIPS 140-2 standard (structured on fourth levels) and the evaluation of a product can be done using Common Criteria (ISO 15408), methodology adopted by USA, Canada and EU (structured on seventh levels).\par
Cracking represents an operation helping to design a technique, method or algorithm that permit the recovery of the system key or of the plain text having a reduced complexity than brute force attack method:\par
- the evaluator wants to find the minimum quantity of output information that help him to determine, using some strong mathematical tools, a series of information about the cipher algorithm, used key and/or plain text;\par
- the cracker wants to find the maximum quantity of information that help him to deduce the plain text.\par